package com.chao.tlias;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.junit.jupiter.api.Test;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class JwtDemo {
    /**
     * 生成令牌
     */
    @Test
    public void createToken() {
        Map<String, Object> claims =new HashMap<>();
        claims.put("id",1);
        claims.put("name","地山谦");
        String jwt = Jwts.builder()
                .signWith(SignatureAlgorithm.HS256,"aXRDaGFv")//指定签名密钥
                .setClaims(claims)//添加自定义内容（载荷）
                .setExpiration(new Date(System.currentTimeMillis()+3600*1000))//设置有效期为一个小时
                .compact();//生成令牌
        System.out.println(jwt);
    }

    /**
     * 解析令牌
     */
    @Test
    public void parseToken() {
        String token = "eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoi5Zyw5bGx6LCmIiwiaWQiOjEsImV4cCI6MTc0NDY5MDA1Nn0.Cgo_stxP2o1yuxFxYdgsOc1zrAx9RJ-VwOb8w5n7dbA";
         Claims claims = Jwts.parser()
                .setSigningKey("aXRDaGFv")//指定签名密钥
                .parseClaimsJws(token)//解析令牌
                .getBody();//获取自定义内容
        System.out.println(claims);
    }
}
